home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Skunkware 5
/
Skunkware 5.iso
/
src
/
X11
/
help
/
api_test.c
< prev
next >
Wrap
C/C++ Source or Header
|
1995-07-29
|
11KB
|
369 lines
/*-------------------------------------------------------------------------
Copyright (c) 1993 The Santa Cruz Operation, Inc.
-------------------------------------------------------------------------
All rights reserved. No part of this program or publication may be
reproduced, transmitted, transcribed, stored in a retrieval system,
or translated into any language or computer language, in any form or
by any means, electronic, mechanical, magnetic, optical, chemical,
biological, or otherwise, without the prior written permission of:
The Santa Cruz Operation, Inc. (408) 425-7222
400 Encinal St, Santa Cruz, CA 95060 USA
-------------------------------------------------------------------------
SCCS : @(#) api_test.c 11.1 94/09/23
Author: Diane Walker
Date : 24 Oct 1993
Description:
This example demonstrates the use of the low-level help
api. It uses the following four calls:
1) HelpOpen()
2) HelpDisplay()
3) HelpClose()
Modification History:
M001, 09-Nov-93, dianew
Minor change to the menubar code.
M000, 24-Oct-93, dianew
Created this file.
-----------------------------------------------------------------------*/
#include <X11/Intrinsic.h>
#include <X11/cursorfont.h>
#include <Xm/Xm.h>
#include <Xm/RowColumn.h>
#include <Xm/PushB.h>
#include <Xm/TextF.h>
#include <Xm/Text.h>
#include <Xm/Form.h>
#include <Xm/CascadeB.h>
#include <Xm/MessageB.h>
#include <Xm/MwmUtil.h>
#include <Xm/Label.h>
#include <Xm/LabelG.h>
#include "api.h"
#define PATHLEN 1024
#define CLASS_NAME "Api_test"
static XtPointer ClientHelpContext;
static Widget TopWidget;
static Widget FormDialog;
/* Function Prototypes -----*/
int main(int, char *[]);
static void buildTree(Widget, char **);
static void exitCB(Widget, caddr_t, caddr_t);
static void moreCB(Widget, caddr_t, caddr_t);
static void create_simple_popup();
static void okCB(Widget, Widget, caddr_t);
static void showVersion(Widget, caddr_t, caddr_t);
static void error(char *);
static void helpCB(Widget, caddr_t, caddr_t);
/* End Prototypes ----------*/
main(argc, argv)
int argc;
char *argv[];
{
XtAppContext appContext;
Cursor wait_cursor;
XEvent event;
int i;
Display *disp;
extern char *getcwd();
printf("In App \n");
TopWidget = XtAppInitialize(&appContext, "Api_test",
NULL, 0, &argc, argv, NULL, NULL, 0);
disp = XtDisplay(TopWidget);
wait_cursor = XCreateFontCursor(disp, (unsigned) XC_watch);
buildTree(TopWidget, argv) ;
if (HelpOpen(&(ClientHelpContext), TopWidget, "api_book",
(void (*) (Boolean)) NULL, error) != helpSuccess)
{
printf("HelpOpen failed!\n");
exit(0);
}
XtRealizeWidget(TopWidget);
/* -----XtMainLoop ();---- */
for (;;)
{
XtAppNextEvent(appContext, &event);
XtDispatchEvent(&event);
}
}
static void
buildTree(parent, argv)
Widget parent;
char *argv[];
{
Widget main_form, form, menu_bar;
Widget file_cascade, file_menu, exit_button, save_button;
Widget help_cascade, help_menu, version_button, help_button;
Widget window_button, keys_button, index_button, tutorial_button;
Widget w, c, rc;
Arg args[10];
int n;
char *name;
int helpFlag;
main_form = XtVaCreateManagedWidget( "mainWindow",
xmFormWidgetClass, parent, NULL);
XtAddCallback(main_form, XmNhelpCallback, helpCB, "main_form");
menu_bar = XtVaCreateManagedWidget( "menu_bar",
xmRowColumnWidgetClass, main_form,
XmNrowColumnType, XmMENU_BAR,
XmNtopAttachment, XmATTACH_FORM,
XmNtopOffset, 0,
XmNleftAttachment, XmATTACH_FORM,
XmNleftOffset, 0,
XmNrightAttachment, XmATTACH_FORM,
XmNrightOffset, 0,
NULL);
file_cascade = XtVaCreateManagedWidget( "File",
xmCascadeButtonWidgetClass, menu_bar, NULL);
file_menu = (Widget) XmCreatePulldownMenu( menu_bar,
"filePulldown", NULL, 0);
XtVaSetValues( file_cascade, XmNsubMenuId, file_menu, NULL);
save_button = XtVaCreateManagedWidget( "Save",
xmPushButtonWidgetClass, file_menu, NULL);
exit_button = XtVaCreateManagedWidget( "Exit",
xmPushButtonWidgetClass, file_menu, NULL);
XtAddCallback( exit_button, XmNactivateCallback, exitCB, NULL);
/* Create the Help cascade button */
help_cascade = XtVaCreateManagedWidget("Help",
xmCascadeButtonWidgetClass, menu_bar, NULL);
XtVaSetValues( menu_bar, XmNmenuHelpWidget, help_cascade, NULL);
help_menu = (Widget) XmCreatePulldownMenu( menu_bar,
"helpPulldown", NULL, 0);
XtVaSetValues( help_cascade, XmNsubMenuId, help_menu, NULL);
window_button = XtVaCreateManagedWidget( "On Window",
xmPushButtonWidgetClass, help_menu, NULL);
XtAddCallback(window_button, XmNactivateCallback, helpCB, "on_window");
keys_button = XtVaCreateManagedWidget( "On Keys",
xmPushButtonWidgetClass, help_menu, NULL);
XtAddCallback(keys_button, XmNactivateCallback, helpCB,"on_keys");
index_button = XtVaCreateManagedWidget( "Index",
xmPushButtonWidgetClass, help_menu, NULL);
XtAddCallback(index_button, XmNactivateCallback, helpCB,"index");
tutorial_button = XtVaCreateManagedWidget( "Tutorial",
xmPushButtonWidgetClass, help_menu, NULL);
XtAddCallback(tutorial_button, XmNactivateCallback, helpCB,"Tutorial");
version_button = XtVaCreateManagedWidget( "On Version",
xmPushButtonWidgetClass, help_menu, NULL);
XtAddCallback(version_button, XmNactivateCallback, showVersion, "");
help_button = XtVaCreateManagedWidget( "On Help",
xmPushButtonWidgetClass, help_menu, NULL);
XtAddCallback(help_button, XmNactivateCallback, helpCB,"On_Help");
form = XtVaCreateManagedWidget( "form", xmFormWidgetClass, main_form,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, menu_bar,
XmNtopOffset, 0,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_FORM,
XmNleftOffset, 0,
XmNrightOffset, 0,
XmNbottomOffset, 0,
XmNfractionBase, 100,
NULL);
rc = XtVaCreateManagedWidget( "rc", xmRowColumnWidgetClass,
form, XmNorientation, XmHORIZONTAL, NULL);
n = 0;
w = XmCreateLabel(rc, "api_test", args, n);
XtManageChild(w);
n = 0;
w = XmCreatePushButton(rc, "More", args, n);
XtAddCallback(w, XmNactivateCallback, moreCB, NULL);
XtManageChild(w);
}
static void
showVersion(w, junk1, junk2)
Widget w;
caddr_t junk1, junk2;
{
int n;
Arg args[5];
Widget label, rc, button;
XmString vers_str;
static Widget form = NULL;
if (!form) {
n = 0;
XtSetArg(args[n], XmNdialogStyle, XmDIALOG_MODELESS); n++;
form = XmCreateFormDialog(TopWidget, "VersionDialog",
args, n);
XtAddCallback(form, XmNhelpCallback, helpCB, "on_version");
n = 0;
XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); n++;
XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); n++;
XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM); n++;
XtSetArg(args[n], XmNrightAttachment, XmATTACH_FORM); n++;
rc = XmCreateRowColumn(form, "rc3", args, n);
XtManageChild(rc);
n = 0;
vers_str = XmStringCreateLtoR("Version 1.0",
XmSTRING_DEFAULT_CHARSET);
XtSetArg(args[n], XmNlabelString, vers_str); n++;
label = XmCreateLabel(rc, "versionLabel", args, n);
XtManageChild(label);
XmStringFree(vers_str);
n = 0;
button = XmCreatePushButton(rc, "OK", args, n);
XtAddCallback(button, XmNactivateCallback, okCB, form);
XtManageChild(button);
}
if (!XtIsManaged(form))
XtManageChild(form);
}
static void
exitCB(w, junk1, junk2)
Widget w;
caddr_t junk1, junk2;
{
HelpClose(ClientHelpContext);
exit(0);
}
static void
moreCB(w, junk1, junk2)
Widget w;
caddr_t junk1, junk2;
{
if (!FormDialog)
create_simple_popup();
if (!XtIsManaged(FormDialog))
XtManageChild(FormDialog);
}
static void
create_simple_popup()
{
Widget rc, button, label, button2;
int n;
Arg args[5];
n = 0;
XtSetArg(args[n], XmNdialogStyle, XmDIALOG_MODELESS); n++;
FormDialog = XmCreateFormDialog(TopWidget, "form_dialog", args, n);
XtAddCallback(FormDialog, XmNhelpCallback, helpCB, "more_dialog");
n = 0;
XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); n++;
XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); n++;
XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM); n++;
XtSetArg(args[n], XmNrightAttachment, XmATTACH_FORM); n++;
rc = XmCreateRowColumn(FormDialog, "rc2", args, n);
XtManageChild(rc);
n = 0;
label = XmCreateLabelGadget(rc, "Test_label", args, n);
XtManageChild(label);
n = 0;
button = XmCreatePushButton(rc, "OK", args, n);
XtAddCallback(button, XmNactivateCallback, okCB, FormDialog);
XtManageChild(button);
n = 0;
button2 = XmCreatePushButton(rc, "Help", args, n);
XtAddCallback(button2, XmNactivateCallback, helpCB, "more_dialog_help");
XtManageChild(button2);
}
static void
okCB(w, form, junk2)
Widget w, form;
caddr_t junk2;
{
XtUnmanageChild(form);
}
static void
error(err_string)
char *err_string;
{
static Widget errorBox = NULL;
Widget b;
Arg args[6];
int n;
XmString xm_errstr;
if (!errorBox) {
n = 0;
XtSetArg(args[n], XmNmessageAlignment, XmALIGNMENT_CENTER); n++;
XtSetArg(args[n], XmNresizePolicy, XmRESIZE_NONE); n++;
XtSetArg(args[n], XmNdialogStyle,
XmDIALOG_FULL_APPLICATION_MODAL); n++;
errorBox = XmCreateErrorDialog(TopWidget, "errors",
args, n);
XtVaSetValues(XtParent(errorBox),
XmNmwmDecorations, MWM_DECOR_TITLE + MWM_DECOR_BORDER,
NULL);
/* Unmanage cancel/help buttons */
b = XmMessageBoxGetChild(errorBox, XmDIALOG_CANCEL_BUTTON);
XtUnmanageChild(b);
b = XmMessageBoxGetChild(errorBox, XmDIALOG_HELP_BUTTON);
XtUnmanageChild(b);
}
xm_errstr = XmStringCreateLtoR(err_string, XmSTRING_DEFAULT_CHARSET);
XtVaSetValues(errorBox, XmNmessageString, xm_errstr, NULL);
XmStringFree(xm_errstr);
if (!XtIsManaged(errorBox))
XtManageChild(errorBox);
}
static void
helpCB(w, clientData, callData)
Widget w;
XtPointer clientData;
XtPointer callData;
{
char *topic = (char *) clientData;
HelpDisplay(ClientHelpContext, NULL, helpTopic, topic);
}